package math;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class EnsN {

    public static class EnsN2 {

        private final List<Graphe> liste;

        public EnsN2(int n) {
            liste = new ArrayList<Graphe>();
            int k;
            for (int j = 2 ; j <= n ; j++) {
                for (int i = 2 ; i <= n ; i++) {
                    liste.add(new Graphe(Paire.paire(i, j), i * j));
                }

            }
        }
    }

    public static List<Graphe> phi(int n) {
        List<Graphe> ret = new ArrayList<Graphe>();
        List<Graphe> liste = ensN2(n);
        Iterator<Graphe> it;
        Graphe g;
        List<Paire> FL;
        int fph;
        int prod, ij_1, ij_2;
        for (it = liste.iterator() ; it.hasNext() ;) {
            g = it.next();
            prod = g.result();
            ij_1 = g.pij()._1();
            ij_2 = g.pij()._2();
            FL = Format.formater(facteur(prod));
            fph = fphi(FL);
            ret.add(new Graphe(g.pij(), fph));
        }

        return ret;
    }

    public static Interval interval(String name, int min, int max) {
        return Interval.interval(name, min, max);
    }

    public static Facteur facteur(int entier) {
        return Facteur.facteur(entier);
    }

    public static Integer fphi(List<Paire> form) {
        Integer ret = 1;
        Iterator<Paire> it;
        int mult;
        for (it = form.iterator() ; it.hasNext() ;) {
            mult = it.next()._2();
            ret *= (mult + 1);
        }
        return ret;
    }

    public static List<Graphe> ensN2(int n) {
        return new EnsN2(n).liste;
    }
}










